home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8434 / 8434.xpi / chrome / content / manage.js < prev    next >
Text File  |  2009-11-14  |  11KB  |  201 lines

  1. const FILE_VERSION = 5;
  2. var table, tree, STRINGS, hideTree, updateElement;
  3. var filterText = "";
  4. function init() {
  5.     STRINGS = document.getElementById("strings");
  6.     var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService);
  7.     prefs = prefs.getBranch("extensions.googleredesigned.");
  8.     if (prefs.getIntPref("fileVersion") != FILE_VERSION) {
  9.         openDialog("chrome://googleredesigned/content/repair.xul", "googleredesignedRepair", "chrome,dialog,modal,center,resizable=no", {});
  10.         prefs.setIntPref("fileVersion", FILE_VERSION);
  11.     }
  12.     if (location.href.indexOf("sidebar=1") > -1) {
  13.         var sidebarStyle = document.createProcessingInstruction("xml-stylesheet", "href=\"chrome://googleredesigned/skin/sidebar.css\" type=\"text/css\"");
  14.         document.insertBefore(sidebarStyle, document.documentElement);
  15.     }
  16.     if (googleredesignedCommon.hasSSSFix) {
  17.         document.getElementById("manage-info").style.display = "none";
  18.     }
  19.     tree = document.getElementById("styles");
  20.     hideTree = document.getElementById("hide-tree");
  21.     updateElement = document.getElementById("update");
  22.     loadTable();
  23. }
  24. function loadTable() {
  25.     var topVisibleRow = null;
  26.     if (table) {
  27.         topVisibleRow = getTopVisibleRow();
  28.     }
  29.     table = [];
  30.     var enumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren();
  31.     var atLeastOne = enumerator.hasMoreElements();
  32.     while (enumerator.hasMoreElements()) {
  33.         var node = enumerator.getNext();
  34.         var style = new GoogleRedesignedStyle(node);
  35.         if (filterText == "" ||
  36.             style.description.toLowerCase().indexOf(filterText) >= 0) {
  37.             table.push(style);
  38.         }
  39.     }
  40.     sort();
  41.     if (topVisibleRow) {
  42.         setTopVisibleRow(topVisibleRow);
  43.     }
  44.     hideTree.selectedIndex = atLeastOne ? 0 : 1;
  45.     updateElement.disabled = !atLeastOne;
  46.     changeSelection();
  47. }
  48. function treeView(table) {
  49.     this.rowCount = table.length;
  50.     this.getCellText = function (row, col) {return table[row][col.id];};
  51.     this.getCellValue = function (row, col) {return table[row][col.id];};
  52.     this.setCellValue = function (row, col, value) {table[row].enabledString = value;GoogleRedesignedStyle.prototype.ds.save();loadTable();};
  53.     this.setTree = function (treebox) {this.treebox = treebox;};
  54.     this.isEditable = function (row, col) {return col.editable;};
  55.     this.isContainer = function (row) {return false;};
  56.     this.isSeparator = function (row) {return false;};
  57.     this.isSorted = function () {return false;};
  58.     this.getLevel = function (row) {return 0;};
  59.     this.getImageSrc = function (row, col) {return null;};
  60.     this.getRowProperties = function (row, props) {};
  61.     this.getCellProperties = function (row, col, props) {};
  62.     this.getColumnProperties = function (colid, col, props) {};
  63.     this.cycleHeader = function (col, elem) {};
  64.     this.performActionOnRow = function (action, row) {switch (action) {case "open":if (row == -1) {openAdd();} else {googleredesignedCommon.openEdit(table[row]);}break;default:alert("Unrecognized action " + action + " on row " + row + ".");}};
  65.     this.performAction = function (action) {switch (action) {case "delete":var styles = getSelectedStyles();var prompt, parms, title;if (styles.length == 1) {parms = [styles[0].description];title = STRINGS.getString("deleteStyleTitle");prompt = STRINGS.getFormattedString("deleteStyle", parms);} else {parms = [styles.length];title = STRINGS.getString("deleteStylesTitle");prompt = STRINGS.getFormattedString("deleteStyles", parms);}var prompts = Components.classes['@mozilla.org/embedcomp/prompt-service;1'].getService(Components.interfaces.nsIPromptService);if (prompts.confirmEx(window, title, prompt, prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_IS_STRING + prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_CANCEL, STRINGS.getString("deleteStyleOK"), null, null, null, {})) {return;}for (var i = 0; i < styles.length; i++) {if (styles[i].enabled) {styles[i].unregister();}GoogleRedesignedStyle.prototype.ds.deleteRecursive(styles[i].node);}GoogleRedesignedStyle.prototype.ds.save();loadTable();break;default:alert("Unrecognized action " + action + ".");}};
  66. }
  67. function load() {
  68.     document.getElementById("hidesbicon").addEventListener("command", function (event) {var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);var css = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#googleredesigned-panel,#googleredesigned-panel-prism {display: none !important;}";var uri = ios.newURI("data:text/css," + css, null, null);if (!sss.sheetRegistered(uri, sss.USER_SHEET)) {sss.loadAndRegisterSheet(uri, sss.USER_SHEET);var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);var grsbiconhide = grprefsinstance.getBoolPref("extensions.googleredesigned.sbiconhide");grprefsinstance.setBoolPref("extensions.googleredesigned.sbiconhide", true);} else {sss.unregisterSheet(uri, sss.USER_SHEET);var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);var grsbiconhide = grprefsinstance.getBoolPref("extensions.googleredesigned.sbiconhide");grprefsinstance.setBoolPref("extensions.googleredesigned.sbiconhide", false);}}, false);
  69.     document.getElementById("toolsmnicon").addEventListener("command", function (event) {var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);var css = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#googleredesigned-tools-menu {display: -moz-box !important;}";var uri = ios.newURI("data:text/css," + css, null, null);if(!sss.sheetRegistered(uri, sss.USER_SHEET)) {sss.loadAndRegisterSheet(uri, sss.USER_SHEET);var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);var grsbiconhide = grprefsinstance.getBoolPref("extensions.googleredesigned.toolsmnhide");grprefsinstance.setBoolPref("extensions.googleredesigned.toolsmnhide", false);} else {sss.unregisterSheet(uri, sss.USER_SHEET);var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);var grsbiconhide = grprefsinstance.getBoolPref("extensions.googleredesigned.toolsmnhide");grprefsinstance.setBoolPref("extensions.googleredesigned.toolsmnhide", true);}}, false);
  70.     document.getElementById("turnoffau").addEventListener("command", function (event) {var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);var grautoupdateon = grprefsinstance.getBoolPref("extensions.googleredesigned.autoupdateon");if (grautoupdateon) {grprefsinstance.setBoolPref("extensions.googleredesigned.autoupdateon", false);} else {grprefsinstance.setBoolPref("extensions.googleredesigned.autoupdateon", true);}}, false);
  71. }
  72. function sort(column) {
  73.     var columnName;
  74.     var order = tree.getAttribute("sortDirection") == "ascending" ? 1 : -1;
  75.     if (column) {
  76.         columnName = column.id;
  77.         if (tree.getAttribute("sortResource") == columnName) {
  78.             order *= -1;
  79.         }
  80.     } else {
  81.         columnName = tree.getAttribute("sortResource");
  82.     }
  83.     function columnSort(a, b) {
  84.         if (prepareForComparison(a[columnName]) > prepareForComparison(b[columnName])) {
  85.             return 1 * order;
  86.         }
  87.         if (prepareForComparison(a[columnName]) < prepareForComparison(b[columnName])) {
  88.             return -1 * order;
  89.         }
  90.         if (columnName != "description") {
  91.             if (prepareForComparison(a.description) > prepareForComparison(b.description)) {
  92.                 return 1;
  93.             }
  94.             if (prepareForComparison(a.description) < prepareForComparison(b.description)) {
  95.                 return -1;
  96.             }
  97.         }
  98.         return 0;
  99.     }
  100.     table.sort(columnSort);
  101.     tree.setAttribute("sortDirection", order == 1 ? "ascending" : "descending");
  102.     tree.setAttribute("sortResource", columnName);
  103.     tree.view = new treeView(table);
  104.     var cols = tree.getElementsByTagName("treecol");
  105.     for (var i = 0; i < cols.length; i++) {
  106.         cols[i].removeAttribute("sortDirection");
  107.     }
  108.     document.getElementById(columnName).setAttribute("sortDirection", order == 1 ? "ascending" : "descending");
  109. }
  110. function prepareForComparison(o) {
  111.     if (typeof o == "string") {
  112.         return o.toLowerCase();
  113.     }
  114.     return o;
  115. }
  116. function getSelectedIndices() {
  117.     var indices = [];
  118.     var rangeCount = tree.view.selection.getRangeCount();
  119.     for (var i = 0; i < rangeCount; i++) {
  120.         var start = {};
  121.         var end = {};
  122.         tree.view.selection.getRangeAt(i, start, end);
  123.         for (var c = start.value; c <= end.value; c++) {
  124.             indices.push(c);
  125.         }
  126.     }
  127.     return indices;
  128. }
  129. function getSelectedStyles() {
  130.     var indices = getSelectedIndices();
  131.     var styles = [];
  132.     for (var i = 0; i < indices.length; i++) {
  133.         styles.push(table[indices[i]]);
  134.     }
  135.     return styles;
  136. }
  137. function getTopVisibleRow() {
  138.     return tree.treeBoxObject.getFirstVisibleRow();
  139. }
  140. function setTopVisibleRow(topVisibleRow) {
  141.     return tree.treeBoxObject.scrollToRow(topVisibleRow);
  142. }
  143. function openAdd() {
  144.     openDialog("chrome://googleredesigned/content/edit.xul", googleredesignedCommon.getRandomDialogName("googleredesignedEdit"), googleredesignedCommon.editDialogOptions);
  145. }
  146. function handleEditButtonClick() {
  147.     tree.view.performActionOnRow("open", getSelectedIndices()[0]);
  148. }
  149. function handleDeleteButtonClick() {
  150.     tree.view.performAction("delete");
  151. }
  152. function findUpdateButtonClick() {
  153.     openDialog("chrome://googleredesigned/content/update.xul", "googleredesignedUpdate", "chrome,resizable,dialog=no,centerscreen");
  154. }
  155. function styleListKeyPress(aEvent) {
  156.     if (aEvent.keyCode == 46) {
  157.         tree.view.performAction("delete");
  158.     }
  159. }
  160. function changeSelection() {
  161.     var edit = document.getElementById("edit");
  162.     var deleteB = document.getElementById("delete");
  163.     var selectedStyleCount = getSelectedStyles().length;
  164.     switch (selectedStyleCount) {
  165.       case 0:
  166.         edit.disabled = true;
  167.         deleteB.disabled = true;
  168.         break;
  169.       case 1:
  170.         edit.disabled = false;
  171.         deleteB.disabled = false;
  172.         break;
  173.       default:
  174.         edit.disabled = true;
  175.         deleteB.disabled = false;
  176.         break;
  177.     }
  178. }
  179. function handleStyleListDoubleClick(event) {
  180.     var row = {}, col = {}, obj = {};
  181.     tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj);
  182.     tree.view.performActionOnRow("open", row.value);
  183. }
  184. function inputFilter(event) {
  185.     var value = event.target.value.toLowerCase();
  186.     setFilter(value);
  187.     document.getElementById("clearFilter").disabled = value.length == 0;
  188. }
  189. function clearFilter() {
  190.     document.getElementById("clearFilter").disabled = true;
  191.     var filterElement = document.getElementById("filter");
  192.     filterElement.focus();
  193.     filterElement.value = "";
  194.     setFilter("");
  195. }
  196. function setFilter(text) {
  197.     filterText = text;
  198.     loadTable();
  199. }
  200. var listObserver = {onDragStart: function (event, transferData, action) {var row = {}, col = {}, obj = {};tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj);transferData.data = new TransferData;transferData.data.addDataForFlavour("text/unicode", "chrome://googleredesigned/content/edit.xul?uri=" + encodeURIComponent(table[row.value].uri));}};
  201.